/*
 * CServer.h
 *
 *  Created on: 05.03.2012
 *      Author: caffeine
 */

#ifndef __CServer_H__
#define __CServer_H__
#include <lampe/config.h>
#include <lampe/thread/IThread.h>
#include "../thread/CThread.h"
#include <lampe/network/IServer.h>
#include <lampe/network/IServerCallBack.h>
#include <lampe/network/IClientCallback.h>


namespace lampe{
namespace network{

/**
 * @class CServer
 * Базовый класс для создания сетевого сервера
 */
class CServer:public virtual IServer,public lampe::thread::CThread{
private:
	IServerCallBack*callBack;
protected:
	virtual void waitClient()=0;
public:

	/**
	 * Метод метод, обрабатываемый в отдельном потоке
	 */
	virtual void threadRunning();

	virtual IClientCallback*getClientObject();

	/**
	 * Диструктор
	 */
	virtual ~CServer();
	
	CServer(IServerCallBack*callback);
};
}//namespace network
}//namespace lampe
#endif /* CServer_H_ */
